package com.atguigu.gmall.product.util;

import org.aspectj.weaver.ast.Var;
import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 文件操作相关工具类
 */
public class FileUtil {
    /**
     * 使用静态代码块的方式能保证配置文件初始化的操作只执行一次
     */
    static {
        try {
            //读取配置文件
            ClassPathResource resource = new ClassPathResource("tracker.conf");
            //进行FastDFS初始化
            ClientGlobal.init(resource.getPath());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 文件上传
     * @param file
     * @return
     */
    public static String fileUpload(MultipartFile file){

        try {
            //初始化tracker连接
            TrackerClient trackerClient = new TrackerClient();
            //通过客户端获取服务端的实例
            TrackerServer connection = trackerClient.getConnection();
            //通过tracker获取storage 的信息
            StorageClient storageClient = new StorageClient();
            //获取文件的名字
            String originalFilename = file.getOriginalFilename();
            //通过storage上传文件
            /**
             *三个参数 文件的字节码
             *       文件的拓展名
             *       文件的附加参数
             */
            String[] strings = storageClient.upload_file(file.getBytes(),
                    StringUtils.getFilenameExtension(originalFilename),
                    null);
            return strings[0]+"/"+strings[1];
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
